6. 常见登陆发方式
- Cookie-Session 认证
- 认证过程大致如下:
- 用户输入用户名、密码或者用短信验证码方式登录系统;
- 服务端验证后,创建一个 Session 信息,并且将 SessionID 存到 cookie,发送回浏览器;
- 下次客户端再发起请求,自动带上 cookie 信息,服务端通过 cookie 获取 Session 信息进行校验;
- 弊端
- 随着用户数量增加,服务端开销会增加
- 只能在 web 场景下使用,如果是 APP 中,不能使用 cookie 的情况下就不能用了;
- 即使能在 web 场景下使用,也要考虑跨域问题,因为 cookie 不能跨域;
- cookie 存在 CSRF(跨站请求伪造)的风险;
- 如果是分布式服务,需要考虑 Session 同步问题;
- OAuth 认证
- OAuth 认证比较常见的就是微信登录、微博登录、qq登录等,
- 简单来说就是利用这些比较权威的网站或应用开放的 API 来实现用户登录
- 用户可以不用在你的网站或应用上注册账号,直接用已有的微信、微博、qq 等账号登录。
- 具体你的身为信息,真假等由鉴定第三方负责,比如微信,微博,qq等
- 你登录的服务器只负责接收结果
- 基于JWT的Token认证
- JSON Web Token(JWT)是一个非常轻巧的规范
- 具体使用参见后面JWT的内容
- 优点
- 使用 json 作为数据传输,通用,体积小,便于传输;
- 不需要在服务器端保存相关信息;
- jwt 载荷部分可以存储业务相关的信息(非敏感的),例如用户信息、角色等;